iT邦幫忙

2018 iT 邦幫忙鐵人賽
DAY 14
0
Software Development

初探Kotlin系列 第 14

[Day 14] Visibility Modifiers

  • 分享至 

  • xImage
  •  

Kotlin有4種不同的Visibility Modifiers
private, protected, internal 和 public

Packages

Functions, properties and classes, objects 和 interfaces可直接宣告在package中宣告

// file name: example.kt
package foo

fun baz() {}
class Bar {}
  • 如果沒有指定Visibility Modifiers預設就是public
  • 如果宣告private則只會在該.kt檔內可存取
  • 如果宣告為internal只在相同module可存取
// file name: example.kt
package foo

private fun foo() {} // 只在example.kt可存取

public var bar: Int = 5 // 對外皆可存取
    private set         // 只在example.kt可存取
    
internal val baz = 6    // 只在相同module可存取

Classes and Interfaces

宣告在類別中的成員變數

  • private 只在該類別中可存取
  • protected 只在該類別及繼承的子類別中可存取
  • internal 模組中的其他成員皆可存取
  • public 對外皆可存取
open class Outer {
    private val a = 1
    protected open val b = 2
    internal val c = 3
    val d = 4  // 預設public 
    
    protected class Nested {
        public val e: Int = 5
    }
}

class Subclass : Outer() {
    // a 是不可見的
    // b, c, d, e 可以存取

    override val b = 5   // 'b' is protected
}

class Unrelated(o: Outer) {
    // o.a, o.b 不能存取
    // o.c and o.d 相同module可以存取
}

上一篇
[Day 13] Interfaces
下一篇
[Day 15] Extensions-1
系列文
初探Kotlin19
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言